home *** CD-ROM | disk | FTP | other *** search
- |##########|
- |#MAGIC #|BOPDMNIK
- |#PROJECT #|""
- |#PATHS #|"EGSProject"
- |#FLAGS #|xx---x--x---xxx-----------------
- |#USERSW #|--------------------------------
- |#USERMASK#|--------------------------------
- |#SWITCHES#|x--x-x----------
- |##########|
- DEFINITION MODULE EGSBlit;
- |
- | 31.08.91 EBitMapPtr bei Unpack Image
- |
- |
- | +---------------------------------------------------------------------+
- | | |##
- | | egsblit.library v0.4, © '91 StoneWare |##
- | | EXTENDED - GRAPHICS - STANDARD |##
- | | |##
- | +---------------------------------------------------------------------+##
- | #######################################################################
- |
- | Diese Library stellt grundlegende Zeichenfunktionen zur Verfügung.
- | Es handelt sich vor allem um jene Funktionen, die in einer späteren
- | Kartenversion durch einen Blitter implementiert werden können.
- |
- | Es sollten deshalb wenn immer möglich diese Funktionen verwendet werden.
- |
- | Sie bildet ausserdem die Basis auf der weitere Librarys wie EGSLayers,
- | EGSGfx und EGSIntui aufsitzen. Wird sie für eine völlig andere Karte
- | implementiert, laufen diese höheren Librarys uneingeschränkt.
- |
- | Programme, die sich ebenfalls daran halten sind somit sehr Zukunftssicher.
- |
- | Diese Library verzichtet zu gunsten der Geschwindigkeit auf jeglichen
- | Verwaltungsaufwand. Die meisten Funktionen liegen in einer Version
- | mit und ohne Clipping vor. Dieses Clipping ist sehr rudimentär, da es
- | sich auf nur ein Rechteck bezieht.
- |
- FROM Exec IMPORT LibraryPtr;
- FROM System IMPORT Regs,LONGSET;
- FROM EGS IMPORT EBitMap,EBitMapPtr;
- |
- | ClipRect, ClipRectPtr
- |
- | Definition eines Clipping-Rechtecks. Die Werte verstehen sich inklusive.
- | Das Feld "next" ist für die EGSLayers library, und wird von EGSBlit völlig
- | ignoriert.
- |
- TYPE
- ClipRectPtr = POINTER TO ClipRect;
- ClipRect = RECORD
- next : ClipRectPtr;
- left,
- top,
- right,
- bottom : INTEGER;
- END;
- |
- | ColorTable, Image
- |
- | Häufig ist es nötig für Icons vorgegebene Images zu verwenden. Da diese in
- | verschiedenen Modi verschieden aufgebaut sind, werden diese in einem
- | allgemeinen BitPlane orientierten Verfahren gespeichert, und können je nach
- | Bedarf zu verschiedenen BitTiefen aufgeblasen werden.
- |
- | Dazu wird ein Feld mit Farbwerten mitgeliefert, in die das Bild gewandelt
- | werden soll.
- |
- |
- ColorTablePtr= POINTER TO ColorTable;
- ColorTable = ARRAY OF LONGINT;
-
- Image = RECORD
- width,
- height,
- depth : INTEGER;
- planes : ARRAY [0..7] OF ANYPTR;
- END;
- |
- | Wozu mag dieser Typ wohl gut sein ????
- |
- CharPtr = POINTER TO CHAR;
- |
- | ColorDes, ColorDesPtr
- |
- | Darstellungsbeschreibung für Textausgaben.
- |
- | ColorDes
- | .front : Vordergrundfarbe
- | .back : Hintergrundfarbe, falls transparent = FALSE
- | .transparent : wenn "TRUE", kommt der Hintergrund durch
- |
- ColorDesPtr = POINTER TO ColorDes;
- ColorDes = RECORD
- front,back : LONGINT;
- transparent : BOOLEAN;
- END;
- |
- | ImageDesPtr, ImageDes
- |
- | Objektbeschreibung für "FillMask".
- |
- | ImageDes
- | .colors : Füllfarben
- | .left,
- | .top,
- | .width,
- | .height : Begrenzung des Objekts.
- |
- ImageDesPtr = POINTER TO ImageDes;
- ImageDes = RECORD
- colors : ColorDes;
- left,
- top,
- width,
- height : INTEGER;
- END;
- |
- | Polygon, PolygonPtr
- |
- | Beschreibung eines Polygons für PolygonFill. Die Größe des Arrays ist nicht
- | beschränkt.
- |
- Polygon = ARRAY OF RECORD x,y : INTEGER END;
- PolygonPtr = POINTER TO Polygon;
-
- VAR
- EGSBlitBase : LibraryPtr;
- |
- | PROCEDURE ReadPixel(map IN A0 : EBitMapPtr;
- | x IN D0,
- | y IN D1 : INTEGER):LONGINT;
- |
- | Auslesen der Farbe eines Bildschirmpunktes. Diese Routine wird durch einen
- | Blitter sicher nicht beschleunigt. Sie sollte aus Kompatibilitätsgründen
- | verwendet werden, wenn mehrere Bit-Tiefen verwendet werden, oder ohne
- | Änderungen an bestehender Software neuere Graphikkarten unterstützt werden
- | sollen.
- |
- | Für den 8 bzw. 24 Bit Modus empfehlen sich sicher direktere Techniken.
- |
- | Beispiel : Umwandeln eines Bildes im 24Bit-Modus in Schwarz-Weiß 8Bit
- |
- | PROCEDURE BlackWhite(src IN A0,dst IN A1 : EBitMapPtr);
- | TYPE
- | RGB = RECORD red,green,blue,pad : SHORTCARD END;
- | RGBPtr = POINTER TO RGB
- | BytePtr = POINTER TO SHORTCARD;
- | VAR
- | s IN A2 : RGBPtr;
- | d IN A3 : BytePtr;
- | x IN D2,
- | y IN D3 : INTEGER;
- | BEGIN
- | INC(src^.planes.lock);
- | INC(dst^.planes.lock);
- | s:=RGBPtr(src^.planes.dest+20);
- | d:=BytePtr(dst^.planes.dest);
- | FOR y:=src^.height-1 TO 0 BY -1 DO
- | FOR x:=src^.width-1 TO 0 BY -1 DO
- | d+^:=(INTEGER(s^.red )*5+
- | INTEGER(s^.green)*7+
- | INTEGER(s^.blue )*4) DIV 16;
- | INC(s,4);
- | END
- | END;
- | DEC(src^.planes.lock);
- | DEC(dst^.planes.lock);
- | END BlackWhite;
- |
- LIBRARY EGSBlitBase BY -30 PROCEDURE ReadPixel(map IN A0 : EBitMapPtr;
- x IN D0,
- y IN D1 : INTEGER):LONGINT;
- |
- | PROCEDURE WritePixel(map IN A0 : EBitMapPtr;
- | c IN D0 : LONGINT;
- | x IN D1,
- | y IN D2 : INTEGER;
- | mask IN D3 : LONGSET);
- |
- | Setzt einen Punkt in der angegebenen Farbe. Für die Verwendung gilt das
- | selbe wie bei ReadPixel.
- |
- LIBRARY EGSBlitBase BY -36 PROCEDURE WritePixel(map IN A0 : EBitMapPtr;
- c IN D0 : LONGINT;
- x IN D1,
- y IN D2 : INTEGER;
- mask IN D3 : LONGSET);
- |
- | PROCEDURE InvertPixel(map IN A0 : EBitMapPtr;
- | x IN D0,
- | y IN D1 : INTEGER);
- |
- | Invertiert einen Pixel. (siehe auch "ReadPixel");
- |
- LIBRARY EGSBlitBase BY -42 PROCEDURE InvertPixel(map IN A0 : EBitMapPtr;
- x IN D0,
- y IN D1 : INTEGER);
- |
- | PROCEDURE Draw(map IN A0 : EBitMapPtr;
- | c IN D0 : LONGINT;
- | x1 IN D1,
- | y1 IN D2,
- | x2 IN D3,
- | y2 IN D4 : INTEGER;
- | mask IN D5 : LONGSET);
- |
- | Zeichnet eine Linie von einem angegebenen Startpunkt zu einem Zielpunkt.
- | Die Routine verwendet einen Modifizierten Bressenham-Algorithmus, ist also
- | relativ schnell. Sie wir mit Sicherheit von einem Blitter übernommen, sollte
- | also auf jeden Fall verwendet werden.
- |
- | Diese Prozedur clipt nicht an den BitMap-Grenzen, ist dadurch aber etwas
- | schneller. Wird als Farbwert -1 angegeben, werden die Punkte unter der
- | Linie invertiert.
- |
- LIBRARY EGSBlitBase BY -48 PROCEDURE Draw(map IN A0 : EBitMapPtr;
- c IN D0 : LONGINT;
- x1 IN D1,
- y1 IN D2,
- x2 IN D3,
- y2 IN D4 : INTEGER;
- mask IN D5 : LONGSET);
- |
- | PROCEDURE DrawClipped(map IN A0 : EBitMapPtr;
- | rect IN A1 : ClipRectPtr;
- | c IN D0 : LONGINT;
- | x1 IN D1 : INTEGER;
- | y1 IN D2 : INTEGER;
- | x2 IN D3 : INTEGER;
- | y2 IN D4 : INTEGER;
- | mask IN D5 : LONGSET);
- |
- | Entspricht "Draw", mit der Ausnahme, daß die Linie anhand des "ClipRects"
- | geclipt wird. Besteht der zu clippende Bereich aus mehreren Rechtecken,
- | muß die Prozedur mehrfach aufgeufen werden.
- |
- | PROCEDURE DrawPolyClip(map : EBitMapPtr;
- | rect : ClipRectPtr;
- | c : LONGINT;
- | x1 : INTEGER;
- | y1 : INTEGER;
- | x2 : INTEGER;
- | y2 : INTEGER;
- | BEGIN
- | WHILE rect#NIL DO
- | DrawClipped(map,rect,c,x1,y1,x2,y2);
- | rect:=rect^.next
- | END;
- | END DrawPolyClip;
- |
- | Diese Technik funktioniert ebenfalls bei den meisten clippenden Prozeduren.
- |
- LIBRARY EGSBlitBase BY -54 PROCEDURE DrawClipped(map IN A0 : EBitMapPtr;
- rect IN A1 : ClipRectPtr;
- c IN D0 : LONGINT;
- x1 IN D1 : INTEGER;
- y1 IN D2 : INTEGER;
- x2 IN D3 : INTEGER;
- y2 IN D4 : INTEGER;
- mask IN D5 : LONGSET);
- |
- | PROCEDURE InvertRectangle(map IN A0 : EBitMapPtr;
- | left IN D0,
- | top IN D1,
- | right IN D2,
- | bottom IN D3 : INTEGER);
- |
- | Invertiert die Umrandung eines Rechtecks. Sollte verwendet werden für
- | Verschiebeoperationen mit der Maus. Diese Prozedur wird von EGSIntui
- | benutzt.
- | Wird die Prozedur zweimal mit den selben Parametern aufgerufen, ändert
- | sich am Bild nichts.
- |
- LIBRARY EGSBlitBase BY -60 PROCEDURE InvertRectangle(map IN A0 : EBitMapPtr;
- left IN D0,
- top IN D1,
- right IN D2,
- bottom IN D3 : INTEGER);
- |
- | PROCEDURE RectangleFill(map IN A0 : EBitMapPtr;
- | c IN D0 : LONGINT;
- | left IN D1,
- | top IN D2,
- | width IN D3,
- | height IN D4 : INTEGER);
- |
- | Füllt ein Rechteck mit den angegebenen Koordinaten. Wir als Farbe "c" -1
- | angegeben, wird das Rechteck invertiert. Die Routine clipt nicht, ist dafür
- | aber etwas schneller.
- | Die Werte von "width" und "height" verstehen sich als wirkliche Breite in
- | Pixel, ein Rechteck mit einem Punkt hätte also width=height=1.
- |
- | Diese Prozedur wird totsicher durch einen Blitter ersetzt, sollte also auf
- | jeden Fall benutzt werden.
- |
- | Beispiel: Löschen des Bildschirms mit einem Farbwert
- |
- | PROCEDURE ClrScrn(scr : EScreenPtr;back : LONGINT);
- | BEGIN
- | MouseOff(scr);
- | WITH scr^.map AS map DO
- | RectangleFill(map,back,0,0,map^.width,map^.height);
- | END;
- | MouseOn(scr);
- | END ClrScrn;
- |
- LIBRARY EGSBlitBase BY -66 PROCEDURE RectangleFill(map IN A0 : EBitMapPtr;
- c IN D0 : LONGINT;
- left IN D1,
- top IN D2,
- width IN D3,
- height IN D4 : INTEGER;
- mask IN D5 : LONGSET);
- |
- | PROCEDURE RectangleClipped(map IN A0 : EBitMapPtr;
- | rect IN A1 : ClipRectPtr;
- | c IN D0 : LONGINT;
- | left IN D1,
- | top IN D2,
- | width IN D3,
- | height IN D4 : INTEGER);
- |
- | Selbe Funktion wie "RectangleFill", nur clipt diese Prozedur anhand eines
- | ClipRects.
- |
- LIBRARY EGSBlitBase BY -72 PROCEDURE RectangleClipped(map IN A0 : EBitMapPtr;
- rect IN A1 : ClipRectPtr;
- c IN D0 : LONGINT;
- left IN D1,
- top IN D2,
- width IN D3,
- height IN D4 : INTEGER;
- mask IN D5 : LONGSET);
- |
- | PROCEDURE Write(map IN A0 : EBitMapPtr;
- | color IN A2 : ColorDesPtr;
- | x IN D0,
- | y IN D1 : INTEGER;
- | str IN A3 : CharPtr;
- | len IN D2 : INTEGER);
- |
- | Schreibt ein Textstück mit dem eingebauten Zeichensatz. Diese Routine
- | clipt nicht.
- |
- | Ausgaben mit dem eingebauten Zeichensatz sind wesentlich schneller, als solche
- | mit Amiga-Fonts (siehe EGSGfx), da die Routine extra darauf zugeschnitten ist.
- | Es handelt sich um einen 8x10-Punkte Bold nicht proportional Font.
- |
- | Falls ihre Programme viel Text verwenden, und keine besonderen Anforderungen
- | an den Zeichensatz gestellt werden, sollte dieser Font verwendet werden.
- |
- LIBRARY EGSBlitBase BY -78 PROCEDURE Write(map IN A0 : EBitMapPtr;
- color IN A2 : ColorDesPtr;
- x IN D0,
- y IN D1 : INTEGER;
- str IN A3 : CharPtr;
- len IN D2 : INTEGER;
- mask IN D3 : LONGSET);
- |
- | PROCEDURE WriteClipped(map IN A0 : EBitMapPtr;
- | rect IN A1 : ClipRectPtr;
- | color IN A2 : ColorDesPtr;
- | x IN D0,
- | y IN D1 : INTEGER;
- | str IN A3 : CharPtr;
- | len IN D2 : INTEGER);
- |
- | Wie Write, nur mit Clipping.
- |
- LIBRARY EGSBlitBase BY -84 PROCEDURE WriteClipped(map IN A0 : EBitMapPtr;
- rect IN A1 : ClipRectPtr;
- color IN A2 : ColorDesPtr;
- x IN D0,
- y IN D1 : INTEGER;
- str IN A3 : CharPtr;
- len IN D2 : INTEGER;
- mask IN D3 : LONGSET);
- |
- | PROCEDURE CopyBitMap(src IN A0,
- | dst IN A1 : EBitMapPtr;
- | xs IN D0,
- | ys IN D1,
- | width IN D2,
- | height IN D3,
- | xd IN D4,
- | yd IN D5 : INTEGER);
- |
- | Kopiert einen Ausschnitt aus einer Bitmap in eine andere. Die BitMaps
- | müssen die selbe Bit-Tiefe haben. Diese Routine clipt nicht. Sie wird sicher
- | durch einen Blitter ersetzt werden, sollte also auf jeden Fall verwendet
- | werden. "width" und "height" verstehen sich wie bei "RectangleFill".
- |
- | Beispiel: Sichern und wiederherstellen eines Bildschirmrechtecks:
- |
- | PROCEDURE Push(map : EBitMapPtr;x,y,w,h : INTEGER):EBitMapPtr;
- | VAR push : EBitMapPtr;
- | BEGIN
- | New(push);
- | IF AllocBitMap(push^,map^.width,map^.height,map^.depth,FALSE) THEN
- | CopyBitMap(map,push,x,y,w,h,0,0);
- | ELSE
- | Dispose(push); | setzt push:=NIL;
- | END;
- | RETURN push;
- | END Push;
- |
- | PROCEDURE Pop(push,map : EBitMapPtr;x,y : INTEGER);
- | BEGIN
- | CopyBitMap(push,map,0,0,push^.width,push^.height,x,y);
- | Dispose(push);
- | END Pop;
- |
- LIBRARY EGSBlitBase BY -90 PROCEDURE CopyBitMap(src IN A0,
- dst IN A1 : EBitMapPtr;
- xs IN D0,
- ys IN D1,
- width IN D2,
- height IN D3,
- xd IN D4,
- yd IN D5 : INTEGER;
- mask IN D6 : LONGSET);
- |
- | PROCEDURE CopyBitMapClipped(src IN A0,
- | dst IN A1 : EBitMapPtr;
- | rect IN A2 : ClipRectPtr;
- | xs IN D0,
- | ys IN D1,
- | width IN D2,
- | height IN D3,
- | xd IN D4,
- | yd IN D5 : INTEGER);
- |
- | Wie CopyBitMap, nur wird das Ziel durch ein Rechteck geclipt.
- |
- LIBRARY EGSBlitBase BY -96 PROCEDURE CopyBitMapClipped(src IN A0,
- dst IN A1 : EBitMapPtr;
- rect IN A2 : ClipRectPtr;
- xs IN D0,
- ys IN D1,
- width IN D2,
- height IN D3,
- xd IN D4,
- yd IN D5 : INTEGER;
- mask IN D6 : LONGSET);
- |
- | PROCEDURE FillMask(mask IN A0 : EBitMapPtr;
- | dst IN A1 : EBitMapPtr;
- | pattern IN A2 : ImageDesPtr;
- | x IN D0,
- | y IN D1 : INTEGER);
- |
- | Füllt ein Rechteck einer BitMap durch ein Muster. Dieses Muster muß als
- | BitMap mit ein Bit Tiefe vorliegen. Es kann sowohl transparent als auch
- | mit Hintergrund gefüllt werden. Diese Routine clipt nicht. Sie wird sicher
- | durch eine Blitteroperation ersetzt, und sollte auf jeden Fall verwendet
- | werden.
- | Sie dient als Basisroutine für Amiga-Fonts und Area-Befehle.
- |
- LIBRARY EGSBlitBase BY -102 PROCEDURE FillMask(mask IN A0 : EBitMapPtr;
- dst IN A1 : EBitMapPtr;
- pattern IN A2 : ImageDesPtr;
- x IN D0,
- y IN D1 : INTEGER;
- mask IN D2 : LONGSET);
- |
- | PROCEDURE FillMaskClipped(mask IN A0 : EBitMapPtr;
- | dst IN A1 : EBitMapPtr;
- | pattern IN A2 : ImageDesPtr;
- | clip IN A3 : ClipRectPtr;
- | x IN D0,
- | y IN D1 : INTEGER);
- |
- | Wie FillMask, nur wird das Ziel mit einem ClipRect geclipt.
- |
- LIBRARY EGSBlitBase BY -108 PROCEDURE FillMaskClipped(mask IN A0 : EBitMapPtr;
- dst IN A1 : EBitMapPtr;
- pattern IN A2 : ImageDesPtr;
- clip IN A3 : ClipRectPtr;
- x IN D0,
- y IN D1 : INTEGER;
- mask IN D2 : LONGSET);
- |
- | PROCEDURE UnpackImage(VAR dst IN A0 : EBitMap;
- | VAR image IN A1 : Image;
- | depth IN D0 : INTEGER;
- | VAR colors IN A2 : ColorTable):BOOLEAN;
- |
- | Für viele Anwendungen (Icons, Images, Pattern oder Gadgets) ist es nötig
- | standardisierte Bilder zu haben, die auch bei verschiedenen Modi verwendet
- | werden können, ohne sie jedesmal neu definieren zu müssen.
- | Diese Routine erhält als Eingabe eine Bildbeschreibung in Form von
- | Bitplanes (so können auch einfach Amiga-Images konvertiert werden), und
- | eine Farbtabelle. Die Bitplanes müssen auf ganze Worte gerundet werden.
- | Die Routine erzeugt zunächst eine BitMap-Struktur mit der angegebenen Tiefe
- | und der Größe des Bildes. Danach werden die Farben aus der Farbtabelle
- | eingetragen, wie sie über die Bitplanes kodiert sind.
- |
- | Beispiel: Ein vierfarbiges "Smiley"
- |
- | CONST
- | ImageA = Image:(width=16,height=12,depth=2,planes=(
- | ARRAY OF CARDINAL:(%0000001111000000,
- | %0001111111111000,
- | %0011111111111100,
- | %0111000110001110,
- | %0111011111101110,
- | %1111111111111111,
- | %1111111111111111,
- | %0111111111111110,
- | %0111111111111110,
- | %0011111111111100,
- | %0001111111111000,
- | %0000001111000000)'PTR,
- | ARRAY OF CARDINAL:(%0000001111000000,
- | %0001110000111000,
- | %0010000000000100,
- | %0100111001110010,
- | %0100111001110010,
- | %1000000000000001,
- | %1001110000111001,
- | %0100111111110010,
- | %0100011111100010,
- | %0010000000000100,
- | %0001110000111000,
- | %0000001111000000)'PTR,
- | NIL,NIL,NIL,NIL,NIL,NIL));
- |
- | VAR map : VBitMap;
- |
- | ...
- | IF UnpackImage(map,ImageA,24,ColorTable:($FF000000, | rot
- | $FFFFFF00, | weiß
- | $FFFF0000, | gelb
- | $00000000));| schwarz
- | CopyBitMap(map,dest,0,0,map^.width,map^.height,100,100);
- | END;
- | ...
- |
- |
- LIBRARY EGSBlitBase BY -114 PROCEDURE UnpackImage(VAR image IN A1 : Image;
- depth IN D0 : INTEGER;
- colors IN A2 : ColorTablePtr):EBitMapPtr;
- |
- | PROCEDURE BitAreaCircle(dst IN A0 : EBitMapPtr;
- | radius IN D0 : INTEGER);
- |
- | Zeichnet einen ausgefüllten Kreis in einer BitMap mit Tiefe eins. Der
- | Kreis steht in der oberen linken Ecke. Die Daten der BitMap werden
- | so verbogen, daß sie den Kreis genau einhüllt.
- |
- | Der erzeugte Kreis kann als Vorlage für "FillMask" dienen.
- |
- LIBRARY EGSBlitBase BY -120 PROCEDURE BitAreaCircle(dst IN A0 : EBitMapPtr;
- radius IN D0 : INTEGER;
- xoffset IN D1 : INTEGER);
- |
- | PROCEDURE BitAreaPolygon(dst IN A0 : EBitMapPtr;
- | poly IN A1 : PolygonPtr;
- | range IN D0 : INTEGER;
- | width IN D1,
- | height IN D2 : INTEGER);
- |
- | Zeichnet ein ausgefülltes Polygon in eine einplaneige (sorry) BitMap. Das
- | Polygon sollte so normalisiert werden, daß die kleinsten Koordinaten in
- | x- und y-Richtung genau null sind.
- |
- | In "width" und "height" muß die echte Breite und Höhe des Polygons übergeben
- | werden, da die Ausmaße der BitMap daran angepasst werden.
- |
- | Das Poylgon wird als Array von Koordinaten übergeben, die Anzahl der Eckpunkte
- | in "range".
- |
- | Überlappen sich Teile des Polygons löschen sich diese gegenseitig aus, so daß
- | auch Teile freigelassen werden können (für Vector-Fonts etc.). Liegen die
- | beiden Ränder eine Strecke aufeinander, (Start- und Endpunkt beider
- | Begrenzungen sind gleich) wird nichts gezeichnet, so daß auch Enklaven
- | möglich sind.
- |
- | Diese Routine liefert Grundlagen für "FillMask".
- |
- LIBRARY EGSBlitBase BY -126 PROCEDURE BitAreaPolygon(dst IN A0 : EBitMapPtr;
- poly IN A1 : PolygonPtr;
- range IN D0 : INTEGER;
- width IN D1,
- height IN D2 : INTEGER);
- |
- | PROCEDURE FloodFill(dst IN A0 : EBitMapPtr;
- | clip IN A1 : ClipRectPtr;
- | color IN D0 : LONGINT;
- | x IN D1,
- | y IN D2 : INTEGER;
- | mode IN D3 : BOOLEAN);
- |
- | Füllt ein zusammenhängendes Stück einer BitMap. Das angegebene ClipRect dient
- | als zusätzliche Grenze, falls der Bereich zum Rand hin offen ist.
- |
- | Ist mode=FALSE, wird der Bereich gefüllt, der die Farbe an der Startstelle
- | hat, sonst der Bereich, der durch die zu füllende Farbe umgeben ist.
- |
- | Leider ist es nicht möglich diese Routine auch für komplexe ClipRegions
- | zu benützen,
- |
- LIBRARY EGSBlitBase BY -132 PROCEDURE FloodFill(dst IN A0 : EBitMapPtr;
- clip IN A1 : ClipRectPtr;
- color IN D0 : LONGINT;
- x IN D1,
- y IN D2 : INTEGER;
- mode IN D3 : BOOLEAN);
-
-
-
- LIBRARY EGSBlitBase BY -138 PROCEDURE ExtractColor(src IN A0,
- dst IN A1 : EBitMapPtr;
- color IN D0 : LONGINT;
- sx IN D1,
- sy IN D2,
- w IN D3,
- h IN D4,
- dx IN D5,
- dy IN D6 : INTEGER);
-
- LIBRARY EGSBlitBase BY -144 PROCEDURE FloodOneBit(map IN A0 : EBitMapPtr;
- clip IN A1,
- dclip IN A2 : ClipRectPtr;
- x IN D0,
- y IN D1 : INTEGER);
-
- LIBRARY EGSBlitBase BY -150 PROCEDURE FloodZeroBit(map IN A0 : EBitMapPtr;
- clip IN A1,
- dclip IN A2 : ClipRectPtr;
- x IN D0,
- y IN D1 : INTEGER);
-
- END EGSBlit.
-
-